home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / exampleCode / inventor / SpaceballViewer / MyFloatCallbackList.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-08-02  |  2.9 KB  |  91 lines

  1. /*
  2.  * Copyright (c) 1991, 1994 Silicon Graphics, Inc.
  3.  *
  4.  * Permission to use, copy, modify, distribute, and sell this software and
  5.  * its documentation for any purpose is hereby granted without fee, provided
  6.  * that the name of Silicon Graphics may not be used in any advertising or
  7.  * publicity relating to the software without the specific, prior written
  8.  * permission of Silicon Graphics.
  9.  *
  10.  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
  11.  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
  12.  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  13.  *
  14.  * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
  15.  * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER
  16.  * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF THE
  17.  * POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN
  18.  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  19.  */
  20. //  -*- C++ -*-
  21.  
  22. /*
  23.  * Copyright (C) 1991   Silicon Graphics, Inc.
  24.  *
  25.  _______________________________________________________________________
  26.  ______________  S I L I C O N   G R A P H I C S   I N C .  ____________
  27.  |
  28.  |   $Revision: 1.5 $
  29.  |
  30.  |   Description:
  31.  |    Callback list - a list of callback functions and associated data,
  32.  |   with member functions to add, remove, and invoke callbacks.
  33.  |    
  34.  |   Classes:    MyFloatCallbackList
  35.  |
  36.  |   Author(s):    David Mott
  37.  |
  38.  ______________  S I L I C O N   G R A P H I C S   I N C .  ____________
  39.  _______________________________________________________________________
  40.  */
  41.  
  42. #ifndef  _SO_FLOAT_CALLBACK_LIST_
  43. #define  _SO_FLOAT_CALLBACK_LIST_
  44.  
  45. #include <Inventor/SbPList.h>
  46.  
  47. //////////////////////////////////////////////////////////////////////////////
  48. //
  49. //  Class: MyFloatCallbackList
  50. //
  51. //////////////////////////////////////////////////////////////////////////////
  52.  
  53. // Callback functions that are registered with this class should
  54. // be cast to this type.
  55. typedef void MyFloatCallbackListCB(void *userData, float callbackData);
  56.  
  57. // C-api: prefix=SoFCBList
  58. class MyFloatCallbackList {
  59.     
  60.   public:
  61.  
  62.     MyFloatCallbackList();
  63.     ~MyFloatCallbackList();
  64.     
  65.     //
  66.     // Managing callback functions
  67.     // At callback time, f will be called with userData as the first
  68.     // parameter, and callback specific data as the second parameter.
  69.     // e.g. (*f)(userData, callbackData);
  70.  
  71.     // C-api: name=addCB
  72.     void    addCallback(MyFloatCallbackListCB *f, void *userData = NULL);
  73.     // C-api: name=removeCB
  74.     void    removeCallback(MyFloatCallbackListCB *f, void *userData = NULL);
  75.     
  76.     // C-api: name=clearCB
  77.     void    clearCallbacks()                { list.truncate(0); }
  78.     // C-api: name=getNumCB
  79.     int        getNumCallbacks() const            { return list.getLength(); }
  80.  
  81.     // C-api: name=invokeCB
  82.     void    invokeCallbacks(float callbackData);
  83.  
  84.   private:
  85.   
  86.     // callbackList holds a list of functions and user data
  87.     SbPList     list;
  88. };
  89.  
  90. #endif  /* _SO_FLOAT_CALLBACK_LIST_ */
  91.